import { createApp, onMounted, ref, watch } from 'vue'
import 'bootstrap/dist/css/bootstrap.min.css'
// import zhCn from 'element-plus/es/locale/lang/zh-cn'
// import En from 'element-plus/es/locale/lang/en'
// import Vi from 'element-plus/es/locale/lang/vi'
// import './styles/tableLIst.css'
// import './styles/index.scss'
// import ElSvg from './components/SvgIcon/ElSvg'
// import CategorySelector from '@/components/CategorySelector/index.vue'
import Cookies from 'js-cookie'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'element-plus/theme-chalk/dark/css-vars.css'
import locale from 'element-plus/es/locale/lang/zh-cn'
import { i18n } from '@/i18n'

import '@/assets/styles/index.scss' // global css

import App from './App'
import store from './store'
import router from './router/index.ts'
// import directive from './directive' // directive

import Table from '@/components/table/index.vue'
import beiyong from '@/components/TangTable/beiyong.vue'
import JTable from '@/components/JTable/index.vue'
import Tables from '@/components/Tables/TableDate.vue'
import TangTable from '@/components/TangTable/TangTable.vue'
import HeTable from '@/components/TangTable/HeTable.vue'
import Find from '@/components/Find/index.vue'
import JFind from '@/components/JFind/index.vue'
import JDialog from '@/components/JDialog/index.vue'
import AddOne from '@/components/Function/addOne.vue'
import qiTable from '@/components/TangTable/qiTable.vue'
import PageModule from '@/components/PageModule/PageModule.vue'

// 注册指令
import plugins from './plugins' // plugins
// import { download } from '@/utils/request'

// svg图标
import 'virtual:svg-icons-register'
import SvgIcon from '@/components/SvgIcon'
import elementIcons from '@/components/SvgIcon/svgicon'

import './permission' // permission control

import { useDict } from '@/utils/dict'
import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels } from '@/utils/ruoyi'

// 分页组件
import Pagination from '@/components/Pagination'
// 自定义表格工具组件
import RightToolbar from '@/components/RightToolbar'
// 富文本组件
import Editor from '@/components/Editor'
// 文件上传组件
import FileUpload from '@/components/FileUpload'
// 图片上传组件
import ImageUpload from '@/components/ImageUpload'
// 图片预览组件
import ImagePreview from '@/components/ImagePreview'
// 字典标签组件
import DictTag from '@/components/DictTag'

const app = createApp(App)

// 全局方法挂载
app.config.globalProperties.useDict = useDict
// app.config.globalProperties.download = download
app.config.globalProperties.parseTime = parseTime
app.config.globalProperties.resetForm = resetForm
app.config.globalProperties.handleTree = handleTree
app.config.globalProperties.addDateRange = addDateRange
app.config.globalProperties.selectDictLabel = selectDictLabel
app.config.globalProperties.selectDictLabels = selectDictLabels

// 全局组件挂载
app.component('DictTag', DictTag)
app.component('Pagination', Pagination)
app.component('FileUpload', FileUpload)
app.component('ImageUpload', ImageUpload)
app.component('ImagePreview', ImagePreview)
app.component('RightToolbar', RightToolbar)
app.component('Editor', Editor)

app.component('Table', Table)
app.component('beiyong', beiyong)
app.component('HeTable', HeTable)
app.component('JTable', JTable)
app.component('Tables', Tables)
app.component('TangTable', TangTable)
app.component('qiTable', qiTable)
app.component('Find', Find)
app.component('JFind', JFind)
app.component('JDialog', JDialog)
app.component('AddOne', AddOne)
app.component('PageModule', PageModule)

app.use(router)
app.use(store)
app.use(plugins)
app.use(elementIcons)
app.use(i18n)
app.component('svg-icon', SvgIcon)

// directive(app)

// 使用element-plus 并且设置全局的大小
app.use(ElementPlus, {
  locale: locale,
  // 支持 large、default、small
  size: Cookies.get('size') || 'default'
})

app.mount('#app')
